#include <iostream>
using namespace std;
// class Person {
//     public:
//         void identity() {
//             cout << _name << endl;
//         }
//     protected:
//         string _name = "张三";
//         int _age = 18;
// };
// class Student : public Person {
//     public:
//     void study() {
//         cout << "study" << endl;
//     }
//     protected: 
//         int _stuid;
// };
// class Teacher : public Person {
//     public:
//         void teaching() {
//             cout << "teaching()" << endl;
//         }
//     protected:
//         string title; // 职称
// };
// int main() {
//     Student s;
//     Teacher t;
//     s.identity();
//     t.identity();
//     return 0;
// }

// // 基类
// class Person {
//     public:
//         string _name = "LiSi";
// };
// // 派生类
// class Student : Person {
//     public:
//         void print() {
//             cout << _name << endl;
//         }
//     private:
//         int _stuid = 0;
// };
// int main() {
//     Student a;
//     Person b;
//     a.print();
//     cout << a._name << endl;
//     return 0;
// }


// // 基类
// class Person {
//     public:
//         string _name = "LiSi";
// };
// struct Teacher : Person {
//     void print() {
//         cout << _name << endl;
//     }
//     private:
//         string _title = "教师";
// };
// int main() {
//     Teacher a;
//     a.print();
//     cout << a._name << endl;
//     return 0;
// }



// // 基类
// class Person {
//     protected:
//         string _name;
//         string _sex;
//         int _age;
// };
// // 派生类
// class Student : public Person {
//     protected:
//         int _stuid;
// };

// int main() {
//     Student s;
//     Person p = s;
//     Person* ptr = &s;
//     Person& ref = s;
//     return 0;
// }

// // 父类
// class Person {
//     protected:
//         string _name = "LiSi";
//         int _age = 18;
// };
// // 子类
// class Student : public Person {
//     public: 
//         void Print() {
//             // cout << "age: " << _age << endl;
//             cout << Person::_age << endl;
//         }
//     protected:
//         int _age = 20;
// };

// int main() {
//     Student s;
//     s.Print();
//     return 0;
// }



// // 父类
// class Person {
//     public:
//         void Print(int x) {
//             cout << "person: " << x << endl;
//         }
// };
// // 子类
// class Student : public Person {
//     public: 
//         void Print(int x) {
//             cout << "student: " <<  x << endl;
//         }
// };

// int main() {
//     Student s;
//     s.Print(666);
//     s.Person::Print(888);
//     return 0;
// }

// class A
// {
// public:
//   void fun() { cout << "func()" << endl; }
// };

// class B : public A {
// public:
//   void fun(int i) { cout << "func(int i)" << i << endl; }
// };

// int main() {
//   B b;
//   b.fun(10);
//   b.fun();

//   return 0;
// };


// // 基类
// class Person {
//     public:
//         // 构造函数
//         Person(const string& name = "LiSi")
//             : _name(name) {
//                 cout << "Person(const string& name = 'LiSi')" << endl;
//             }
//         // 拷贝构造函数
//         Person(const Person& p) 
//             :_name(p._name)
//         {
//             cout << "Person(const Person& p)" << endl;
//         }
//         // 赋值运算符重载函数
//         Person& operator=(const Person& p) {
//             cout << "operator=(const Person& p)" << endl;
//             if(this != &p) {
//                 _name = p._name;
//             }
//             return *this;
//         }
//         // 析构函数
//         ~Person() {
//             cout << "~Person" << endl;
//         }
//     private:
//         string _name;
// };

// // 子类
// class Student : public Person {
//     public:
//         // 构造函数
//         Student(const string& name, int stuid)
//             :Person(name),
//             _stuid(stuid){
//                 cout << "Student(const string& name, int stuid)" << endl;
//             }
//         // 拷贝构造函数
//         Student(const Student& s) 
//             :Person(s) // 使用了切片
//             , _stuid(s._stuid)
//         {
//             cout << "Student(const Student& s)" << endl;
//         }
//         // 赋值运算符重载函数
//         Student& operator=(const Student& s) {
//             cout << "operator=(const Student& s)" << endl;
//             if(this != &s) {
//                 Person::operator=(s);
//                 _stuid = s._stuid;
//             }
//             return *this;
//         }
//         // 析构函数
//         ~Student() {
//             cout << "~Student()" << endl;
//         }
//     private:
//         int _stuid;
// };


// class test {
//     private:
//     test() {
//         }
    
//         test(int _x) :x(_x)
//         {
//         }public:
//         void print() {
//             cout << x << endl;
//         }
//     private:
//         int x = 10;
// };

// int main() {
//     test t(10);
//     t.print();
//     return 0;
// }


// class Student; // 前置声明
// class Person {
//     public:
//         friend void Display(const Person& p, const Student& s);
//     protected:
//         string _name = "LiSi";
// };
// class Student : public Person {
//     public:
//         friend void Display(const Person& p, const Student& s);
//     protected:
//         int _stuid;
// };
// void Display(const Person& p, const Student& s) {
//     cout << p._name << endl; // 可以访问
//     cout << s._name << endl; // 可以访问
//     cout << s._stuid << endl; // 不可以访问
// }
// int main() {
//     Person p;
//     Student s;
//     Display(p, s);
//     return 0;
// }
// #include <iostream>
// using namespace std;
// class Person {
//     public:
//         Person() {
//             _count++;
//         }
//     public:
//         string _name;
//         static int _count;
// };

// int Person::_count = 0;

// class Student : public Person {
//     protected:
//         int _stuid;
// };

// int main() {
//     Person p1;
//     Person p2;
//     Student s1;
//     Student s2;
//     // cout << Person::_count << endl;
//     // cout << Student::_count << endl;
//     cout << &p1._name << endl;
//     cout << &s1._name << endl;

//     cout << &p1._count << endl;
//     cout << &s1._count << endl;
//     return 0;
// }


// #include <iostream>
// using namespace std;
// class Person {
//     public:
//         string _name;
// };
// class Student : virtual public Person {
//     protected:
//         int _stuid;
// };
// class Teacher : virtual public Person {
//     protected:
//         string title;
// };
// class Assistant : public Student, public Teacher {
//     protected:
//         string _assid;
// };

// int main() {
//     Assistant a;
//     a._name = "LiSi";

//     // cout << a.Student::_name << endl;
//     // cout << a.Teacher::_name << endl;

//     cout << &a.Student::_name << endl;
//     cout << &a.Teacher::_name << endl;
//     return 0;
// }

// #include <iostream>
// using namespace std;

// class A {
// public:
//     int a;  // 类 A 的成员变量
// };

// class B : virtual public A {
// public:
//     int b;  // 类 B 的成员变量
// };

// class C : virtual public A {
// public:
//     int c;  // 类 C 的成员变量
// };

// class D : public B, public C {
// public:
//     int d;  // 类 D 的成员变量
// };

// int main() {
//     D d;
//     d.B::a = 1;
//     d.C::a = 2;
//     d.b = 3;
//     d.c = 4;
//     d.d = 5;
//     cout << d.a << endl;
//     return 0;
// }



#include <iostream>
using namespace std;
class Tire {
    protected:
        string _brand;
        string _size;
};
class Car {
    protected:
        string _colour;
        string _num;
        Tire _t1;
        Tire _t2;
        Tire _t3;
        Tire _t4;
};
class BWM : public Car {
    public:
        void Drive() {
            cout << "BWM" << endl;
        }
};
int main() {
    return 0;
}